package br.com.gustavobhz.portalcolaborador.entidade;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.apache.tapestry5.beaneditor.NonVisual;
import org.hibernate.annotations.SQLDelete;
import org.hibernate.annotations.Where;

@Entity
@Table(name = "ocorrencia")
@SQLDelete(sql = "update ocorrencia set is_ativo = 0 where id_ocorrencia = ?")
@Where(clause = "is_ativo = 1")
public class Ocorrencia {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "id_ocorrencia")
	@NonVisual
	private long id;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "data_ocorrencia")
	private Date dataOcorrencia;
	
	@Column(name = "hora_ocorrencia")
	private String horaOcorrencia;
	
	@Column(name = "observacao")
	private String observacao;
	
	@Enumerated(EnumType.ORDINAL)
	@Column(name = "motivo_ocorrencia")
	private MotivoOcorrencia motivoOcorrencia;
	
	@OneToOne
	@JoinColumn(name = "id_funcionario")
	private Funcionario funcionario;
	
	@OneToOne
	@JoinColumn(name = "id_usuario")
	private Usuario usuario;

	@Column(name = "is_ativo")
	private boolean ativo;

	public long getId() {
		return id;
	}

	public void setId(long id) {
		this.id = id;
	}

	public Date getDataOcorrencia() {
		return dataOcorrencia;
	}

	public void setDataOcorrencia(Date dataOcorrencia) {
		this.dataOcorrencia = dataOcorrencia;
	}

	public String getHoraOcorrencia() {
		return horaOcorrencia;
	}

	public void setHoraOcorrencia(String horaOcorrencia) {
		this.horaOcorrencia = horaOcorrencia;
	}

	public String getObservacao() {
		return observacao;
	}

	public void setObservacao(String observacao) {
		this.observacao = observacao;
	}

	public MotivoOcorrencia getMotivoOcorrencia() {
		return motivoOcorrencia;
	}

	public void setMotivoOcorrencia(MotivoOcorrencia motivoOcorrencia) {
		this.motivoOcorrencia = motivoOcorrencia;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public Funcionario getFuncionario() {
		return funcionario;
	}

	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}

	public boolean isAtivo() {
		return ativo;
	}

	public void setAtivo(boolean ativo) {
		this.ativo = ativo;
	}
	
	
}